var ns = window.ns_url;
/* 基础对象检测 */
ns || $.error("js-ns_url基础配置没有正确加载！");
/**
 * 解析URL
 * @param  {string} url 被解析的URL
 * @return {object}     解析后的数据
 */
ns.parse_url = function (url) {
	var parse = url.match(/^(?:([a-z]+):\/\/)?([\w-]+(?:\.[\w-]+)+)?(?::(\d+))?([\w-\/]+)?(?:\?((?:\w+=[^#&=\/]*)?(?:&\w+=[^#&=\/]*)*))?(?:#([\w-]+))?$/i);
	parse || $.error("url格式不正确！");
	return {
		"scheme": parse[1],
		"host": parse[2],
		"port": parse[3],
		"path": parse[4],
		"query": parse[5],
		"fragment": parse[6]
	};
}
ns.parse_str = function (str) {
	var value = str.split("&"), vars = {}, param;
	for (val in value) {
		param = value[val].split("=");
		vars[param[0]] = param[1];
	}
	return vars;
}
ns.parse_name = function (name, type) {
	if (type) {
		/* 下划线转驼峰 */
		name = name.replace(/_([a-z])/g, function ($0, $1) {
			return $1.toUpperCase();
		});
		/* 首字母大写 */
		name = name.replace(/[a-z]/, function ($0) {
			return $0.toUpperCase();
		});
	} else {
		/* 大写字母转小写 */
		name = name.replace(/[A-Z]/g, function ($0) {
			return "_" + $0.toLowerCase();
		});
		/* 去掉首字符的下划线 */
		if (0 === name.indexOf("_")) {
			name = name.substr(1);
		}
	}
	return name;
}
//scheme://host:port/path?query#fragment
ns.url = function (url, vars, suffix) {
	var info = this.parse_url(url), path = [], param = {}, reg;

	/* 验证info */
	info.path || $.error("url格式错误！");
	url = info.path;
	/* 解析URL */
	path = url.split("/");
	path = [path.pop(), path.pop(), path.pop()].reverse();
	path[1] = path[1] || this.route[1];
	path[0] = path[0] || this.route[0];
//  param[this.route[0]] = path[0];
//  param[this.route[1]] = path[1];
//  param[this.route[2]] = path[2].toLowerCase();
//	url = param[this.route[0]] + '/' + param[this.route[1]] + '/' + param[this.route[2]];
	param[this.route[2]] = path[0];
	param[this.route[3]] = path[1];
	param[this.route[4]] = path[2].toLowerCase();
	url = param[this.route[2]] + '/' + param[this.route[3]] + '/' + param[this.route[4]];
	/* 解析参数 */
	if (typeof vars === "string") {
		vars = this.parse_str(vars);
	} else if (!$.isPlainObject(vars)) {
		vars = {};
	}
	/* 添加伪静态后缀 */
	if (false !== suffix) {
		suffix = suffix || 'html';
		if (suffix) {
			url += "." + suffix;
		}
	}
	/* 解析URL自带的参数 */
	info.query && $.extend(vars, this.parse_str(info.query));
	/* 判断站点id是否存在 */
	var site = '';
	if (vars.site_id) {
		var site_id = vars.site_id;
		delete vars.site_id;
		site = 's' + parseInt(site_id) + '/';
	} else {
		var site_id = this.route[0];
		site = site_id > 0 ? 's' + parseInt(site_id) + '/' : '';
	}
	var addon = '';
	if (info.scheme != '' && info.scheme != undefined) {
		addon = info.scheme + '/';
	}
	url = site + addon + url;
	if (vars) {
		var param_str = $.param(vars);
		if ('' !== param_str) {
			url += ((this.baseUrl + url).indexOf('?') !== -1 ? '&' : '?') + param_str;
		}
	}
	url = this.baseUrl + url;
	return url;
}

/**
 * 处理图片路径
 */
ns.img = function (path, type = '') {
	if (path.indexOf("http://") == -1 && path.indexOf("https://") == -1) {
		var start = path.lastIndexOf('.');
		type = type ? '_' + type : '';
		var base_url = this.baseUrl.replace('/?s=', '');
		var suffix = path.substring(start);
		var path = path.substring(0, start);
		var true_path = base_url + 'attachment/' + path + type + suffix;
	} else {
		var true_path = path;
	}
	return true_path;
}

/**
 * 时间戳转时间
 *
 */
ns.time_to_date = function (timeStamp) {
	if (timeStamp > 0) {
		var date = new Date();
		date.setTime(timeStamp * 1000);
		var y = date.getFullYear();
		var m = date.getMonth() + 1;
		m = m < 10 ? ('0' + m) : m;
		var d = date.getDate();
		d = d < 10 ? ('0' + d) : d;
		var h = date.getHours();
		h = h < 10 ? ('0' + h) : h;
		var minute = date.getMinutes();
		var second = date.getSeconds();
		minute = minute < 10 ? ('0' + minute) : minute;
		second = second < 10 ? ('0' + second) : second;
		return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
	} else {
		return "";
	}
}
/**
 * url 反转义
 * @param url
 */
ns.urlReplace = function (url) {
	var new_url = url.replace(/%2B/g, "+");//"+"转义
	new_url = new_url.replace(/%26/g, "&");//"&"
	new_url = new_url.replace(/%23/g, "#");//"#"
	new_url = new_url.replace(/%20/g, " ");//" "
	new_url = new_url.replace(/%3F/g, "?");//"#"
	new_url = new_url.replace(/%25/g, "%");//"#"
	new_url = new_url.replace(/&3D/g, "=");//"#"
	new_url = new_url.replace(/%2F/g, "/");//"#"
	return new_url;
}